Certain computations may benefit from parallel processing. For example, a complex simulation may run faster when the simulation is divided into portions and the portions are simultaneously run on a number of processing devices in a parallel fashion. Parallel computing arrangements may include a controller that determines how an application should be divided and what application portions go to which parallel processors. For example, a host computer that is running the simulation may act as the controller for a number of parallel processors.
Parallel processors may receive instructions and/or data from the controller and may return a result to the controller. Conventional parallel processing environments may allow parallel processors to send only certain types of messages back to a controller. For example, a parallel processor may be allowed to send only results and errors to a controller. More complex types of communications, such as a request for additional resources, requests for additional information, requests for code, etc., may not be able to originate from a parallel processor in conventional parallel processing environments.
Conventional parallel processing environments may not be able to perform certain types of processing efficiently due to the limited types of messages that can be exchanged between the parallel processor and the controller. For example, a parallel processor may not be able to inform a controller that its configuration is different from a configuration that the controller assumes is present on the parallel processor (e.g., when the controller assumes that a parallel processor is running a first type of operating system when the parallel processor is actually running a second type of operating system that differs from the first type of operating system).